/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package minipaint4Vista;

import MiniPaint4Logica.RepositorioPaint;
import MiniPaint4Logica.DatosDeFigura;
import java.awt.Color;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 *
 * @author Micosil
 */
public class ActionListenerCargar implements ActionListener {

    JTextField dibujoElegido = new JTextField();
    RepositorioPaint almacen;
    JPanel superficieDibujo;

    public ActionListenerCargar(RepositorioPaint almacen, JPanel superficieDibujo) {
        super();
        this.almacen = almacen;
        this.superficieDibujo = superficieDibujo;
    }

    public void actionPerformed(ActionEvent e) {
        JFrame popup = new JFrame();
        popup.setBackground(Color.DARK_GRAY);
        popup.setSize(400, 400);
        popup.setTitle("Ventana hecha sin asistente gráfico.");
        JTextField dibujosDisponibles = new JTextField();
        dibujosDisponibles.setText(almacen.obtenerDibujos());
        dibujosDisponibles.setEditable(false);
        dibujosDisponibles.setLocation(10, 10);
        dibujosDisponibles.setSize(200, 100);

        dibujoElegido.setText("Dibujo seleccionado");

        dibujoElegido.setLocation(110, 10);
        dibujoElegido.setSize(70, 20);
        JButton completado = new JButton();
        completado.setSize(70, 20);
        completado.setLocation(200, 110);
        completado.setText("Cargar");
        completado.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                superficieDibujo.removeAll();
                superficieDibujo.repaint();
                List<DatosDeFigura> lista = almacen.cargar(dibujoElegido.getText());
                List<DatosDeFigura> listaClon = new ArrayList();
                listaClon.addAll(lista);
                lista.clear();
                cargarDibujo(listaClon, lista);
            }

            private void cargarDibujo(List<DatosDeFigura> listaTemporal, List<DatosDeFigura> listaFinal) {
                for (DatosDeFigura unDato:listaTemporal){
                    Point puntoUno = unDato.listaPuntos.get(0); //Esto también impide la carga de cosas con más de dos puntos. Modo de resolverlo - en los constructores.
                    Point puntoDos = unDato.listaPuntos.get(1);
                    String figuraSeleccionada = unDato.tipoFigura;
                    if (figuraSeleccionada.equals("Linea"))
                    superficieDibujo.add(new Linea(puntoUno, puntoDos, superficieDibujo.getVisibleRect(), listaFinal));
                    if (figuraSeleccionada.equals("Rectangulo"))
                    superficieDibujo.add(new Rectangulo(puntoUno, puntoDos, superficieDibujo.getVisibleRect(), listaFinal));
                    if (figuraSeleccionada.equals("Circulo"))
                    superficieDibujo.add(new Circulo(puntoUno, puntoDos, superficieDibujo.getVisibleRect(), listaFinal));                    
                    
                }
                superficieDibujo.repaint();
            }
        });
        popup.add(completado);
        popup.add(dibujosDisponibles);

        popup.add(dibujoElegido);


        popup.setVisible(true);
    }
}
